package top.faig.utils;

import org.bouncycastle.crypto.digests.SM3Digest;
import org.bouncycastle.util.encoders.Hex;

/**
 * GM3Util 类用于执行 SM3 摘要加密操作。
 * SM3 是中国国家密码管理局定义的一种哈希算法，类似于 SHA-256。
 */
public class SM3Util {

  /**
   * 生成数据的 SM3 摘要
   *
   * @param data 数据
   * @return 生成的摘要，以十六进制表示
   */
  public static String digest(String data) {
    byte[] bytes = data.getBytes();
    SM3Digest digest = new SM3Digest();
    digest.update(bytes, 0, bytes.length);
    byte[] hash = new byte[digest.getDigestSize()];
    digest.doFinal(hash, 0);
    return Hex.toHexString(hash);
  }

  public static void main(String[] args) {
    String digest = digest("Hello SM");
    System.out.println("SM3 摘要加密" + digest);
  }

}
